// import com.alibaba.druid.FastsqlException;
// import com.alibaba.druid.sql.ast.SQLDataType;
// import com.alibaba.druid.sql.ast.SQLExpr;
// import com.alibaba.druid.sql.ast.expr.SQLMethodInvokeExpr;
// import com.alibaba.druid.sql.dialect.odps.visitor.OdpsASTVisitor_ptr;
// import com.alibaba.druid.sql.visitor.SQLASTVisitor_ptr;

// import java.io.IOException;
// import java.util.ArrayList;
// import java.util.List;
#pragma once
#include "../../../ast/expr/SQLMethodInvokeExpr.h"
#include "OdpsObject.h"

class OdpsNewExpr : virtual public SQLMethodInvokeExpr, virtual public OdpsObject
{
public:
  BOOL_ptr array;

  SQLExpr_list_ptr initValues;
  SQLDataType_list_ptr typeParameters;

  OdpsNewExpr();

  // @Override
  SQLObject_ptr clone();

  // @Override
  void accept0(SQLASTVisitor_ptr v);

  // @Override
  // void accept0(OdpsASTVisitor_ptr visitor);

  void output(std::stringstream *buf);

  BOOL_ptr isArray();

  void setArray(BOOL_ptr array);

  SQLExpr_list_ptr getInitValues();

  SQLDataType_list_ptr getTypeParameters();
};
